package com.zjsru.plan2024.week;

/**
 * @Author: cookLee
 * @Date: 2024-01-07
 * 对角线最长的矩形的面积
 */
public class AreaOfMaxDiagonal {
    /**
     * 主
     * \
     * 输入：dimensions = [[9,3],[8,6]]
     * 输出：48
     * 解释：
     * 下标 = 0，长度 = 9，宽度 = 3。对角线长度 = sqrt(9 * 9 + 3 * 3) = sqrt(90) ≈ 9.487。
     * 下标 = 1，长度 = 8，宽度 = 6。对角线长度 = sqrt(8 * 8 + 6 * 6) = sqrt(100) = 10。
     * 因此，下标为 1 的矩形对角线更长，所以返回面积 = 8 * 6 = 48。
     * \
     * 输入：dimensions = [[3,4],[4,3]]
     * 输出：12
     * 解释：两个矩形的对角线长度相同，为 5，所以最大面积 = 12。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        AreaOfMaxDiagonal areaOfMaxDiagonal = new AreaOfMaxDiagonal();
        int[][] dimensions = new int[][]{{9, 3}, {8, 6}};
        System.out.println(areaOfMaxDiagonal.areaOfMaxDiagonal(dimensions));
    }

    /**
     * 最大对角线面积
     *
     * @param dimensions 尺寸
     * @return int
     */
    public int areaOfMaxDiagonal(int[][] dimensions) {
        //最大对角线长度
        double max = 0;
        //最大面积
        int maxArea = 0;
        for (int[] dimension : dimensions) {
            double diagonal = this.diagonalHelper(dimension);
            int area = this.areaHelper(dimension);
            if (diagonal > max || (diagonal == max && area > maxArea)) {
                max = diagonal;
                maxArea = area;
            }
        }
        return maxArea;
    }


    /**
     * 对角助手
     *
     * @param dimension 尺寸
     * @return int
     */
    private double diagonalHelper(int[] dimension) {
        int len = dimension[0];
        int row = dimension[1];
        return Math.sqrt(len * len + row * row);
    }

    /**
     * 区域助手
     *
     * @param dimension 尺寸
     * @return int
     */
    private int areaHelper(int[] dimension) {
        int len = dimension[0];
        int row = dimension[1];
        return len * row;
    }

}
